﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LiquidacionComisionSOA.Dominio;
using NHibernate;
using System.Data.SqlClient;

namespace LiquidacionComisionSOA.Persistencia
{
    public class LiquidacionDAO : BaseDAO <Agente, String>
    {

        public List<ReporteResumen> ObtenerReporteResumen(string FechaInicio, string FechaFin)
        {
            string identificador = string.Empty;
            string consulta = string.Empty;
            consulta   = " SELECT LIQ.Periodo, LIQ.Agente, Sum(MontoLiquidacion) AS MontoLiquidacion FROM Liquidacion LIQ";
            consulta += " WHERE (select Estado from Periodos WHERE Periodo = LIQ.Periodo)= 'Cerrado' AND Fecha BETWEEN '" + FechaInicio + "' AND '" + FechaFin + "' ";
            consulta  += " GROUP BY Periodo, Agente ORDER BY Periodo, Agente; ";
            List<ReporteResumen> lista = new List<ReporteResumen>();
            
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                ReporteResumen resumen = new ReporteResumen();
                                resumen.Periodo = (string)resultado["Periodo"];
                                resumen.Agente = (string)resultado["Agente"];
                                resumen.MontoLiquidacion = resultado["MontoLiquidacion"].ToString();
                                lista.Add(resumen);
                            }
                        }                        
                    }
                }
            }
            return lista;
        }

        public List<Liquidacion> ObtenerReporteDetallado(string FechaInicio, string FechaFin, string filtro)
        {
            string identificador = string.Empty;
            string consulta = string.Empty;
            consulta = " SELECT * FROM Liquidacion  WHERE Fecha BETWEEN '" + FechaInicio + "' AND '" + FechaFin + "' AND AGENTE LIKE '" + filtro+ "' ORDER BY Periodo, Agente,Categoria; ";
            List<Liquidacion> lista = new List<Liquidacion>();

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                Liquidacion resumen = new Liquidacion();
                                resumen.IdLiquidacion = resultado["IdLiquidacion"].ToString();
                                resumen.Periodo = (string)resultado["Periodo"];
                                resumen.Agente = (string)resultado["Agente"];
                                resumen.Categoria = (string)resultado["Categoria"];
                                resumen.CantidadOT = resultado["CantidadOT"].ToString();
                                resumen.Precio = resultado["Precio"].ToString();
                                resumen.MontoLiquidacion = (string)resultado["MontoLiquidacion"].ToString();
                                resumen.Estado = (string)resultado["Estado"];
                                lista.Add(resumen);
                            }
                        }
                    }
                }
            }
            return lista;
        }

    }
}